/*
 * ArbreG�n�alogiqueTest.cpp
 *
 *  Created on: 2013-11-29
 *      Author: Simon,Jean-Simon
 */
#include "gtest/gtest.h"
#include "Personne.h"
#include "ArbreGenealogique.h"
#include <iostream>

using tp3::ArbreGenealogique;
using tp3::Personne;

class ArbreGenealogiqueTest : public ::testing::Test
{
public:
	Personne pers;
	ArbreGenealogique arbre;
	ArbreGenealogiqueTest() : pers("Nom","Prenom","13 Dec"), arbre(pers)
	{}
};
TEST_F(ArbreGenealogiqueTest, constructeurOK)
{
	EXPECT_TRUE(arbre.appartient(pers));
}

TEST_F(ArbreGenealogiqueTest, appartientOK)
{
	Personne roger("Roger","Tremblay","28 Dec");
	EXPECT_TRUE(arbre.appartient(pers));
	EXPECT_FALSE(arbre.appartient(roger));
}

TEST_F(ArbreGenealogiqueTest, ajouterEnfantOK)
{
	Personne simon("Simon","Falardeau","28 Dec");
	arbre.ajouterEnfant(pers,simon);
	EXPECT_TRUE(arbre.appartient(simon));
}

TEST_F(ArbreGenealogiqueTest, enfantsDeOK)
{
	Personne simon("Simon","Falardeau","28 Dec");
	Personne  js("JS","Garneau","28 Dec");

	arbre.ajouterEnfant(pers,simon);
	arbre.ajouterEnfant(pers,js);

	std::vector<Personne *> vec = arbre.enfantsDe(pers);

	//Peut-etre le contraire
	EXPECT_EQ(simon,*vec[0]);
	EXPECT_EQ(js,*vec[1]);
}

TEST_F(ArbreGenealogiqueTest, trouvePersonneOK)
{
	Personne simon("Simon","Falardeau","28 Dec");
	Personne js("JS","Garneau","28 Dec");

	arbre.ajouterEnfant(pers,simon);
	arbre.ajouterEnfant(pers, js);

	/*ArbreGenealogique::Noeud* trouve = 0;

	arbre.trouvePersonne(simon,trouve);*/

}

TEST_F(ArbreGenealogiqueTest, _postOrdreOK)
{
	EXPECT_TRUE(true);
}

